/*
 * TarifaBuilderPaso1.java
 *
 * Created on 4 de junio de 2007, 11:13 AM
 */

package inc.jmc.cyberboard.ui.ventas;


import javax.swing.JOptionPane;
import javax.swing.JTextField;

import org.apache.log4j.Logger;

import inc.jmc.cyberboard.Tarifa;
import inc.jmc.cyberboard.common.DefaultLookAndFeel;
import inc.jmc.cyberboard.common.NumFormat;

/**
 *
 * @author  JOlguin01
 */
public class TarifaBuilderPaso5 extends javax.swing.JPanel {
    
	static Logger logger = Logger.getLogger(TarifaBuilderPaso5.class.getName());
    /** Creates new form TarifaBuilderPaso1 */
	TarifaBuilderFrm parent;
    public TarifaBuilderPaso5(TarifaBuilderFrm parent) {
        initComponents();
        modifyButton.setVisible(false);
        guardarButton.setVisible(false);
        cancelarButton.setVisible(false);
        this.parent=parent;
    }
    
    private javax.swing.table.DefaultTableModel defTableModel1=null;
    public void setTarifaIntervalos(int divisiones,Float precioIncremento)
    {
        String []  titulos=new String []{"Fracc.","Intervalo Tiempo","Precio"};
        Object [][] content=new Object [divisiones][3];
        ////
        //estableciendo los titulos para la tabla
        float increm=60.0f/(float)divisiones;
        
        for(int i=0;i<divisiones;++i)
        {
            
            float inf=increm*i;
            /*if(inf==1)
                inf=0;*/
            float sup=increm*(i+1);
            String intervalo="["+NumFormat.nf_0.format(inf)+" - "+NumFormat.nf_0.format(sup)+" ] mins";
            if(precioIncremento!=null)
            {
                    content[i][0]=""+(i+1);
                    content[i][1]=intervalo;
                    content[i][2]=NumFormat.money(precioIncremento.floatValue()*(i+1));
            }
            else
            {
                    content[i][0]="";
                    content[i][1]="";
                    content[i][2]="";
            }
        
        }
        defTableModel1=new javax.swing.table.DefaultTableModel(content,titulos);
        initPriceTable();
    }
    public void setTarifaIntervalos(float[] precios)
    {
    	int divisiones=precios.length;
    	
        String []  titulos=new String []{"Fracc.","Intervalo Tiempo","Precio"};
        Object [][] content=new Object [divisiones][3];
        ////
        //estableciendo los titulos para la tabla
        float increm=60.0f/(float)divisiones;
        
        for(int i=0;i<divisiones;++i)
        {
            
            float inf=increm*i;
            float sup=increm*(i+1);
            String intervalo="["+NumFormat.nf_0.format(inf)+" - "+NumFormat.nf_0.format(sup)+" ] mins";
            content[i][0]=""+(i+1);
            content[i][1]=intervalo;
            content[i][2]=NumFormat.money(precios[i]);
        }
        defTableModel1=new javax.swing.table.DefaultTableModel(content,titulos);
        initPriceTable();
    }
    void initPriceTable()
    {
    	preciosTable.setModel(defTableModel1);
    	preciosTable.setFont(DefaultLookAndFeel.TableFont2);
        preciosTable.setBackground(DefaultLookAndFeel.TableBackground);
        preciosTable.setRowHeight(DefaultLookAndFeel.TableRowHeight);
        preciosTable.getColumnModel().getColumn(0).setWidth(7);
        preciosTable.getColumnModel().getColumn(1).setWidth(4*20);
        preciosTable.getColumnModel().getColumn(2).setWidth(5*5);
        preciosTable.getColumnModel().getColumn(0).setPreferredWidth(7);
        preciosTable.getColumnModel().getColumn(1).setPreferredWidth(4*20);
        preciosTable.getColumnModel().getColumn(2).setPreferredWidth(5*5);
        //Aqui deshabilitamos la edicion de las columnas deseadas
        //por eso ponemos un JTextField sin permisos para editar, y lo establecemos como el 
        //editor de celda por default para esas columnas
        JTextField aux1=new javax.swing.JTextField();
        aux1.setEditable(false);
        javax.swing.DefaultCellEditor aux2=new javax.swing.DefaultCellEditor(aux1);
        //for(int i=0;i<10;++i)
        //{
            preciosTable.getColumnModel().getColumn(0).setCellEditor(aux2);
            preciosTable.getColumnModel().getColumn(1).setCellEditor(aux2);
        //}
        
        
        if(preciosTable.getTableHeader()!=null)
          preciosTable.getTableHeader().setReorderingAllowed(false);
        preciosTable.setColumnSelectionAllowed(false);
        preciosTable.setCellSelectionEnabled(false);
        preciosTable.getColumnModel().setColumnMargin(1);
        preciosTable.getColumnModel().getColumn(0).setResizable(true);
        preciosTable.getColumnModel().getColumn(1).setResizable(true);
        preciosTable.getColumnModel().getColumn(2).setResizable(true);
        jScrollPane1.setViewportView(preciosTable);
        this.updateUI();
    	
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
    private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        preciosTable = new javax.swing.JTable();
        modifyButton = new javax.swing.JButton();
        guardarButton = new javax.swing.JButton();
        cancelarButton = new javax.swing.JButton();
        applyButton = new javax.swing.JButton();
        backButton = new javax.swing.JButton();
        cancelButton = new javax.swing.JButton();

        setLayout(null);

        jPanel1.setLayout(null);

        jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 12));
        jLabel1.setText("Paso 5");
        jPanel1.add(jLabel1);
        jLabel1.setBounds(10, 10, 50, 20);

        jLabel2.setFont(new java.awt.Font("Tahoma", 0, 12));
        jLabel2.setText("<html>Mostrar la tabla de fracciones de horas y su precio(se puede modificar el precio)</html>");
        jLabel2.setHorizontalTextPosition(javax.swing.SwingConstants.LEADING);
        jPanel1.add(jLabel2);
        jLabel2.setBounds(60, 0, 190, 50);

        preciosTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane1.setViewportView(preciosTable);

        jPanel1.add(jScrollPane1);
        jScrollPane1.setBounds(0, 50, 260, 150);

        modifyButton.setText("Modificar");
        modifyButton.setMargin(new java.awt.Insets(0, 0, 0, 0));
        jPanel1.add(modifyButton);
        modifyButton.setBounds(10, 200, 70, 23);

        guardarButton.setText("Guardar");
        guardarButton.setEnabled(false);
        guardarButton.setMargin(new java.awt.Insets(0, 0, 0, 0));
        jPanel1.add(guardarButton);
        guardarButton.setBounds(90, 200, 60, 23);

        cancelarButton.setText("Cancelar");
        cancelarButton.setEnabled(false);
        cancelarButton.setMargin(new java.awt.Insets(0, 0, 0, 0));
        jPanel1.add(cancelarButton);
        cancelarButton.setBounds(170, 200, 70, 23);

        add(jPanel1);
        jPanel1.setBounds(10, 10, 260, 220);

        applyButton.setText("Aplicar tarifa");
        applyButton.setMargin(new java.awt.Insets(0, 0, 0, 0));
        applyButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                applyButtonActionPerformed(evt);
            }
        });

        add(applyButton);
        applyButton.setBounds(180, 240, 90, 23);

        backButton.setText("<<");
        backButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                backButtonActionPerformed(evt);
            }
        });

        add(backButton);
        backButton.setBounds(110, 240, 49, 23);

        cancelButton.setText("Cancelar");
        cancelButton.setMargin(new java.awt.Insets(0, 0, 0, 0));
        cancelButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cancelButtonActionPerformed(evt);
            }
        });

        add(cancelButton);
        cancelButton.setBounds(20, 240, 73, 23);

    }// </editor-fold>//GEN-END:initComponents

    private void applyButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_applyButtonActionPerformed

        Float precio=null;
        Float precioHora=null;
        int npartes=0;
        try{
            int nrows=defTableModel1.getRowCount();
            float[] preciosEnTabla=new float[nrows];
            for(int i=0;i<preciosEnTabla.length;++i)
            {
                String arg1=(String)defTableModel1.getValueAt(i,2);
                preciosEnTabla[i]=Float.parseFloat(arg1);
            
            }
            parent.tarifaAux.setPreciosEnTabla(preciosEnTabla);
        }
        catch(NumberFormatException ex)
        {
            precio=null;
            JOptionPane.showMessageDialog(this,"Algunos campos no se llenaron correctamente en la tarifa-"+ex.getMessage(),"Verifique los datos proporcionados",JOptionPane.ERROR_MESSAGE);
            return;
        }
        parent.tarifaAux.setMinsEnFraccionHora((float)(60.0f/parent.tarifaAux.getFraccionesHora()));
        if(parent.tarifaAux.getPreciosEnTabla()==null)
        {
        	JOptionPane.showMessageDialog(this,"Algunos campos no se llenaron correctamente en la tarifa-","Verifique los datos proporcionados",JOptionPane.ERROR_MESSAGE);
            return;
        }
            
        if(parent.getAddRadioButton().isSelected())
        	Tarifa.addTarifaToCollection(parent.tarifaAux);
        int selndx = -1;
        if(parent.getModifyRadioButton().isSelected())
        {
        	selndx = parent.getJComboBox1().getSelectedIndex();
        	Tarifa.getTarifas().set(selndx, parent.tarifaAux);
        }
        int nelemTarifa=Tarifa.getTarifas().size();
        if(parent.getAddRadioButton().isSelected())
        	nelemTarifa=Tarifa.getTarifas().size();
        else
        	nelemTarifa=parent.getJComboBox1().getSelectedIndex()+1;
        JOptionPane.showMessageDialog(this,"Tarifa aplicada: "+"Hora "+nelemTarifa,"Tarifa Aplicada",JOptionPane.INFORMATION_MESSAGE);
        	
        logger.info("Todas las tarifas actualizadas");
        parent.getContentPane().remove(parent.paso5);
        parent.getContentPane().add(parent.getJPanel1(), java.awt.BorderLayout.CENTER);
        parent.cargarCombos();
        if(parent.getModifyRadioButton().isSelected())
        	parent.getJComboBox1().setSelectedIndex(selndx);
        
        parent.updateUI();
        Tarifa.loggerHoras();
    }//GEN-LAST:event_applyButtonActionPerformed

    private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed

        parent.tarifaAux=new Tarifa();
        parent.getContentPane().remove(parent.paso5);
        parent.getContentPane().add(parent.getJPanel1(), java.awt.BorderLayout.CENTER);
        parent.updateUI();
    }//GEN-LAST:event_cancelButtonActionPerformed

    private void backButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_backButtonActionPerformed

        parent.getContentPane().remove(parent.paso5);
        parent.getContentPane().add(parent.paso4, java.awt.BorderLayout.CENTER);
        parent.updateUI();
    }//GEN-LAST:event_backButtonActionPerformed
    
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton applyButton;
    private javax.swing.JButton backButton;
    private javax.swing.JButton cancelButton;
    private javax.swing.JButton cancelarButton;
    private javax.swing.JButton guardarButton;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JButton modifyButton;
    private javax.swing.JTable preciosTable;
    // End of variables declaration//GEN-END:variables
    
}
